﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;

namespace Z16.BLI
{
    public class Menu
    {
        #region "Variaveis"

        private int codMenu;
        public int CodMenu
        {
            get { return codMenu; }
            set { codMenu = value; }
        }

        private string strNomeMenu;
        public string StrNomeMenu
        {
            get { return strNomeMenu; }
            set { strNomeMenu = value; }
        }

        private string strPagina;
        public string StrPagina
        {
            get { return strPagina; }
            set { strPagina = value; }
        }

        private bool bAtivo;
        public bool BAtivo
        {
            get { return bAtivo; }
            set { bAtivo = value; }
        }

        private int codTipoMenu;
        public int CodTipoMenu
        {
            get { return codTipoMenu; }
            set { codTipoMenu = value; }
        }

        private string strDesTipoMenu;
        public string StrDesTipoMenu
        {
            get { return strDesTipoMenu; }
            set { strDesTipoMenu = value; }
        }

        #endregion

        #region "Metodos"

        public List<Menu> listarMenuPerfil(int codPerfil, int codTipoMenu)
        {
            List<Menu> allLogin = new List<Menu>();

            SqlParameter[] pms =
                    {
                        new SqlParameter("@CODPERFIL", codPerfil),
                        new SqlParameter("@CODTIPOMENU", codTipoMenu)
                    };

            SqlDataReader drMenu = SqlHelper.ExecuteReader(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procSelMenuPerfil", pms);
            while (drMenu.Read())
            {
                Menu menu = new Menu();
                menu.codMenu = Convert.ToInt32(drMenu["COD_MENU"].ToString());
                menu.strNomeMenu = drMenu["NOME_MENU"].ToString();
                menu.StrPagina = drMenu["PAGINA"].ToString();
                allLogin.Add(menu);
            }
            return allLogin;
        }

        public string cadMenu(string strNomeMenu, string strPagina, int bAtivo, int iCodTipoMenu, int? iCodMenu)
        {
            try
            {
                SqlParameter[] pms =
                    {
                        new SqlParameter("@NOMEMENU", strNomeMenu),
                        new SqlParameter("@PAGINA", strPagina),
                        new SqlParameter("@ATIVO", bAtivo),
                        new SqlParameter("@COD_TIPO_MENU", iCodTipoMenu),
                        new SqlParameter("@COD_MENU", iCodMenu)
                    };

                SqlHelper.ExecuteNonQuery(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procCadMenu", pms);

                return "0;Menu adicionado com sucesso!";
            }
            catch (Exception ex)
            {
                return "1;Erro ao inserir Menu: " + ex.Message;
            }
        }

        public DataTable ListarMenusId(int? iCodMenu)
        {
            DataTable menu = new DataTable();
            try
            {
                SqlParameter[] pms =
                    {
                        new SqlParameter("@COD_MENU", iCodMenu)
                    };
                SqlDataReader retorno = SqlHelper.ExecuteReader(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procSelMenuId", pms);

                menu.Load(retorno);
            }
            catch (Exception ex)
            {
                throw;
            }
            return menu;
        }

        public DataTable ListarMenus(string strNomeMenu)
        {
            DataTable menu = new DataTable();
            try
            {
                SqlParameter[] pms =
                    {
                        new SqlParameter("@NOMEMENU", strNomeMenu)
                    };
                SqlDataReader retorno = SqlHelper.ExecuteReader(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procSelMenu", pms);

                menu.Load(retorno);
            }
            catch (Exception ex)
            {
                throw;
            }
            return menu;
        }

        public List<Menu> listarTipoMenu()
        {
            List<Menu> allTipoMenu = new List<Menu>();

            SqlDataReader drTipoMenu = SqlHelper.ExecuteReader(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procSelTipoMenu");
            while (drTipoMenu.Read())
            {
                Menu menu = new Menu();
                menu.codTipoMenu = Convert.ToInt32(drTipoMenu["COD_TIPO_MENU"].ToString());
                menu.strDesTipoMenu = drTipoMenu["DES_TIPO_MENU"].ToString();
                allTipoMenu.Add(menu);
            }
            return allTipoMenu;
        }

        #endregion
    }
}